The present application relates to portable computer systems.
The innovations disclosed in the present application provide computer systems (especially very small portable personal computers) which have advantageous new capabilities for update and/or restoration of system software. To better explain the significance and advantages of these innovations, the following paragraphs will review some technological context. This technological context is not necessarily prior art, but is intended to help in pointing out the disclosed inventions.
Laptop and Smaller Computers
Portable personal computers were introduced in the early 1980s, and proved to be very useful and popular. As this market has developed, it has become increasingly clear that users strongly desire systems to have small volume, small weight, physical durability, and long battery-powered lifetime. Thus, small portable computers ("laptop" computers) have proven extremely popular during the late 1980s. Users continue to demand more features, longer time between recharges, and lower weight and volume. This combination of demands is difficult to meet. Moreover, in about 1990, another smaller generation of portable computers, referred to as "notebook" computers, began to appear; and even smaller computers are now appearing. These smaller form factors have only exacerbated the difficulty of the above tradeoffs.
As small portable computers have developed, the quality of the keyboard input has declined. The quantities of mass storage available on portables have steadily increased, but the cost per byte of the necessary ruggedized drives continues to be far above that of that of the drives normally used. This disparity seems likely to continue. Similarly, although some small portables use nonvolatized solid-state memory to replace disk drives, the cost per byte of such nonvolatized memory is likely to continue to exceed that of conventional mass storage devices.
As small portable computers become ever more common, an increasing number of users prefer to use two computers: one for their desktop, and one more fur the road.
One problem which arises is loss of file coherency: when a user edits a file on his secondary machine, he must transfer that file back to his primary machine before he again edits the same file on the primary machine.
A closely related problem is one of backup: portable computers are inherently more susceptible than desktop computers to accident, loss, and theft.
Laptops normally have a severely limited set of external ports. This limitation is imposed by several factors: first, each external connector takes up precious square inches of surface area. Second, each external connector is a point of vulnerability to electrostatic-discharge-induced component failure. Third, each external connector is a possible point of entry for dirt and moisture. Fourth, in calculating the worst-case power budget for a system, the possible power required by all connectors must be considered.
Layers of Software and Firmware Structure
In order to mediate between application programs and the underlying hardware, several layers of software and firmware structure are used. To better show the context of the invention, these layers will be described below in greater detail.
Startup Software (POST, Bootstrap, etc.)
A computer system normally includes a number of complex hardware components (chips and subsystems). When power is first applied to a computer (or when the user triggers a reset after the system has locked up), the various hardware elements (chips and subsystems) will each have their own internal procedures (reset procedures) to regain a stable and known state. However, at some point (if the hardware is intact), these reset procedures will have ended, and at this point the CPU performs various important overhead tasks under software control. This phase of operation is generally referred to as "POST" (Power-On-Self-Test).
After POST, a "bootstrap" program is run, to permit the CPU to begin execution of other software. For robustness, the POST and bootstrap software is normally stored in a read-only memory. The bootstrap program launches the CPU on execution of the primary operating system software; the primary operating system can then be used by the user to launch an application program, either manually or automatically.
Bootstrap Programs
Any computer system must have some way to begin program execution after a cold start. The hardware architecture of a microprocessor (or other CPU) will normally provide for a "reset" operation, which places all of the hardware circuits in a known electrical state; but it is still necessary to start the CPU on execution of a desired program. For example, in the very early days of computing, some computer systems would be manually configured to read in a "bootstrap loader" program at startup. This bootstrap program was a simple program which loaded in, and started execution of, another sequence of instructions, which were the beginning of the desired program. Bootstrap programs are often referred to simply as "boot" software.
To give a more recent example, the Intel 80.times.86 microprocessors, after a hardware reset, will always attempt to begin program execution from a specific memory address. Thus, if a branch (or conditional branch) instruction is found at this address, the microprocessor will continue its program execution from whatever address is specified.
Thus, this initial target address is the entry point for every session of use. This address is normally used to enter execution of programs which must be run every time the computer is used.
"Basic Input/Output System" Software (BIOS)
The "basic input/output system" (BIOS) software contains frequently-used routines for interfacing to key peripherals, for interrupt handling, and so forth. For system robustness, the BIOS software itself is normally packaged in nonvolatile memory with other key pieces of overhead software, such as POST, boot, and configuration management routines, as well as a pointer to launch the computer into the operating system software. (Thus, the term "BIOS" is often used more broadly, to refer to this whole collection of basic system routines in ROM or EPROM.)
In many types of modern personal computers (and in all "IBM-compatible" personal computers), a key part of the system software is a "basic input/output system" (BIOS) program. The BIOS program contains frequently-used routines tier interfacing to key peripherals, for interrupt handling, and so forth.
For system robustness, the BIOS software is normally packaged in a read-only-memory. In fact, it is normally packaged together with the startup software mentioned above. Thus, nowadays the term "BIOS" is often used, somewhat more broadly, to refer to this whole collection of basic system routines.
BIOS Upgrades
If the BIOS software were to become corrupted, the computer could become unusable. Thus, the BIOS software has conventionally been stored in read-only memory (ROM). When the microprocessor attempts to access the initial target address, it reads out software from the BIOS ROM.
In 1980 there was only one source for IBM-compatible BIOS software, and that was from IBM. However, during the 1980s, as IBM-compatible personal computers became more popular, modified versions of IBM-compatible BIOS ROMs were developed, and IBM-compatible BIOS ROMs were offered by multiple vendors. As of 1991, BIOS software is often modified to implement system-dependent features, especially in low-power systems.
Improvements in BIOS software mean that sometimes it will be desirable to implement a BIOS upgrade. Dedicated users have successfully pried out and replaced ROM chips, but most users would not want this degree of hands-on contact.
Some attempts have been made in the past to provide capability for updating the basic system software. See, e.g., Bingham, D. B., "Achieving flexible firmware," 1978 MIDCON Technical Papers at 20/3/1-4 (1978), which is hereby incorporated by reference.